home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / Mathematics / Notebooks / SigProc2.0 / CHANGES.SUMMARY < prev    next >
Encoding:
Text File  |  1992-08-18  |  9.7 KB  |  195 lines

  1.                 Signal Processing Packages and Notebooks
  2.                     for the Mathematica Environment
  3.  
  4.                     Brian Evans and James McClellan
  5.                     Digital Signal Processing Group
  6.                     School of Electrical Engineering
  7.                     Georgia Institute of Technology
  8.                         Atlanta, GA  30332-0250
  9.  
  10.                     E-MAIL: evans@eedsp.gatech.edu
  11.  
  12.  
  13.      Since the version of the signal processing packages released by
  14. The Mathematica Journal, I have made changes to every file.  The
  15. following highlights those changes.  The packages work simultaneously
  16. under Mathematica 1.2 and 2.0.  Under Mathematica 2.0, evaluating
  17. Needs[ "SignalProcessing`Master`" ] tells Mathematica where to find all 
  18. of the new routines so that they can be automatically loaded when 
  19. referenced.
  20.      When routines load, their 1-D definitions are evaluated.
  21. If multidimensional features are requested, then those definitions
  22. would be automatically loaded.  This decoupling means that undergraduates
  23. using the extensions would need less memory.  For example, one-dimensional
  24. and separable multidimensional z-transforms require 1/3 less memory.
  25.  
  26.  
  27. --> Integration
  28.  
  29.     o Integration rules for Delta functions are now covered by DeltaIntegrate.
  30.       Users can customize them by attaching rules to DeltaIntegrate
  31.       (but first you will need to unprotect it).
  32.     o Integration is now more robust for expressions involving continuous
  33.       step (CStep) functions and continuous pulse (CPulse) forms.
  34.  
  35. --> Expression Simplification
  36.  
  37.     o Added SPSimplify which applies simplification rules for signal
  38.       processing expressions.  It supports a dialogue option:
  39.         Dialogue -> False  no justification
  40.         Dialogue -> True   some justification
  41.         Dialogue -> All    complete justification
  42.     o You can specify a list of symbols to treat as variables to
  43.       SPSimplify by using the Variables option.
  44.     o SPSimplify supports the same options as Simplify does
  45.  
  46. --> New Plotting Routines
  47.  
  48.     o SignalPlot plots the real and imaginary components of a 1-D function
  49.       simultaneously on the same plot, as well as Dirac delta functions.
  50.       The variable $DeltaFunctionScaling directs how Dirac delta functions
  51.       are to be plotted.  A value of None means that the height of all Dirac
  52.       delta functions will be equal to the maximum value of the plot.  A
  53.       value of Scaled means that the height of Dirac delta functions will
  54.       be proportional to their area.  SignalPlot also plots 2-D signals.
  55.     o SequencePlot which plots 1-D and 2-D discrete-time expressions
  56.     o RootLocus plots a root locus for one varying parameter
  57.     o All new plotting routines support the same options as does Plot.
  58.     o PoleZeroPlot shades the region of convergence for s-domain plots.
  59.     o When an invalid region of convergence (ROC) is given to PoleZeroPlot,
  60.       it will display the union of all possible ROC's.
  61.  
  62. --> Convolution
  63.  
  64.     o Either "function" argument can be a list of F-intervals or a
  65.       function in algebraic form
  66.     o Discrete and continuous convolution is performed by PiecewiseConvolution
  67.       which calls either CTPiecewiseConvolution or DTPiecewiseConvolution
  68.       depending on the value of the Domain option (Discrete or Continuous).
  69.       The default domain is the value of $ConvolutionDomain.
  70.     o The discrete linear convolution operator is represented by Convolve[n]
  71.       and the continuous linear convolution operator is denoted CConvolve[t].
  72.       These are merely representations of operations used by the transform
  73.       rules bases; that is, they do not actually perform convolution.
  74.  
  75. --> Transforms
  76.  
  77.     o All transform rule bases can justify their answers.  The level
  78.       of justification is set by the Dialogue option (see above).
  79.     o The transform rule bases recognize convolution and summation operators
  80.     o The inverse z- and Laplace transforms rely on Mathematica's
  81.       partial fractions routine Apart which is not robust.  I have
  82.       written MyApart which will be used by the transform rule bases
  83.       whenever Apart does not finish the decomposition.  By default, MyApart
  84.       will root denominators higher than 5th-order numerically.
  85.     o The forward z-transform handles multidimensional downsampling and
  86.       upsampling operations.
  87.     o The inverse DTFT recognizes transforms that are multidimensionally
  88.       upsampled in the discrete-time domain.
  89.     o The forward and inverse continuous-time Fourier transforms
  90.       use the same set of rules by exploiting the duality property.
  91.     o The Fourier transforms handle infinite impulse trains (represented as
  92.       either Summation[n,-Infinity,Infinity,1][Delta[t + n T]] or
  93.       Periodic[T,t][Delta[t]]).  Aspects of sampling theory can now be shown.
  94.     o The forward discrete-time Fourier transforms explicitly track
  95.       periodicities of frequency responses.
  96.     o All of the transform rule bases support an option called Definition.
  97.       If True, then the rule base will apply the definition of the transform
  98.       (using Mathematica's built-in routines for symbolic integration or
  99.       symbolic summation) if all other attempts at the transform have failed.
  100.     o Regardless of the value of the Dialogue option, the transform
  101.       rule bases will keep track of the assumptions made on the free
  102.       parameters.  They can be retrieved at any time by evaluating
  103.       Assuming[All].  The set of conditions can be cleared by 
  104.       evaluating Assuming[].
  105.     o New operator called CircularShift which is an abstract form of
  106.       the primitive RotateRight.  It was introduced because of the
  107.       new DFT transform pairs written into the DFT rule bases.
  108.     o I have idiot-proofed the transform rule bases.  So, if you typed
  109.       something like LaPlace[ CStep[t], t s ] it would complain about
  110.       t s because you meant t, s.  This should help new users.
  111.     o The TransformLookup option for the transform rule bases allows one
  112.       to specify additional transform pairs.  This is useful when a trans-
  113.       form rule base does not contain a pair that you need.  It is also
  114.       useful for transforming abstract functions (i.e., saying that x[n]
  115.       becomes X[z]).  For example,
  116.  
  117.       In:= ZTransform[a^n x[n], n, z, TransformLookup -> { x[n] :> X[z] }]
  118.       Out= ZTransData[ X[a z], Rminus[0], Rplus[Infinity], ZVariables[z] ]
  119.  
  120.       In:= ZTransform[a^n x[n], n, z,
  121.                       TransformLookup -> { x[n] :> { X[z], rm, rp } } ]
  122.       Out= ZTransData[ X[a z], Rminus[rm], Rplus[rp], ZVariables[z] ]
  123.  
  124.       These transform pairs override the pairs in the transform rule bases.
  125.       The multidimensional case is a natural extension:
  126.  
  127.       In:= ZTransform[ Upsample[l1,n1][ Upsample[l2,n2][ x[n1,n2] ] ],
  128.                        {n1,n2}, {z1, z2},
  129.                        TransformLookup -> { x[n1,n2] :> X[z1,z2] } ]
  130.                            l1    l2
  131.       Out= ZTransData[ X[z1  , z2  ], Rminus[{0, 0}],
  132.                        Rplus[{Infinity, Infinity}], ZVariables[{z1, z2}] ]
  133.  
  134. --> Filters
  135.  
  136.     o CFIR and CIIR structures have an optional third argument: Roots -> roots.
  137.       This argument can be used in lieu of a coefficient list so that a user
  138.       may specify filters in terms of their poles and zeroes.  For example,
  139.       CIIR[t, Roots -> {-1, -2, -3}] gives CIIR[t, {6, 11, 6, 1}].
  140.     o The time responses of analog filters can now be plotted
  141.     o Computational objects for IIR structures, called IIRFunction, now exist.
  142.       Also, FIR structures can be rewritten as a formula.  Their values
  143.       can now be plotted.  Values are calculated as they are needed, and
  144.       IIRFunction remembers (caches) previous calculations.
  145.  
  146. --> Difference/Differential Equation Solvers
  147.  
  148.     o ZSolve and LSolve solve difference and differential equations,
  149.       respectively.  They can justify their answers in the same way
  150.       as the transforms do according to the level of Dialogue (see above).
  151.  
  152. --> Stability Checking
  153.  
  154.     o Stable will resolve stability of non-separable signals more often
  155.       (e.g., Stable will return False when applied to the z-transform of
  156.              (1/2)^n1 (4/5)^n2 Multinomial[n1,n2] Step[n1,n2]
  157.       instead of an unresolved expression.)
  158.  
  159. --> Lattice Theory
  160.  
  161.     o The routines supporting the rules for multirate multidimensional
  162.       signal processing (i.e., lattice and integer matrix theory) have
  163.       been gathered in "Multirate.m" in the Support directory, including
  164.       "DistinctCosetVectors", "SmithNormalForm", and "SmithReducedForm".
  165.     o Added the functions ColumnHermiteForm and RowHermiteForm as well as
  166.       LCLM, LCRM, GCRD, and GCLD.
  167.     o Added the number theoretic EuclidFactors to complement the routine
  168.       BezoutNumbers.  BezoutNumbers finds integers mu and lambda given
  169.       integers a and b such that
  170.  
  171.                      a mu + b lambda == gcd(a,b)
  172.  
  173.       (BezoutNumbers calls the Mathematica primitive ExtendedGCD.)
  174.       EuclidFactors finds the integers mu and lambda given relatively
  175.       prime integers p and q and any integer k so that
  176.  
  177.                        p mu + q lambda == k
  178.  
  179.       EuclidFactors also works when p and q are integer matrices (in
  180.       which case mu, lambda, and k become integer vectors).
  181.     o Added UpsampledSystem and ReorderResampling to help detect
  182.       resampled relationships among variables in an expression
  183.  
  184. --> Changes to Mathematica Primitives
  185.  
  186.     o Integrate so that it can handle generalized functions like the
  187.       Dirac delta (Delta) and functions with discontinuities like
  188.       continuous-time step (CStep) and pulse (CPulse) functions.
  189.     o Simplify applied to an And expression removes redundant conditions
  190.     o Det of a number is that number
  191.     o Dot product of two numbers is the product of the two numbers
  192.     o The TeX forms of Re and Im primitives are Re and Im instead of
  193.       R and I.
  194.  
  195.